home *** CD-ROM | disk | FTP | other *** search
/ QuickTime 2.0 Developer Kit / QuickTime 2.0 Developer Kit.iso / mac / MAC / Programming Stuff / Interfaces / CIncludes / Serial.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-11-11  |  4.0 KB  |  168 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        Serial.h
  3.  
  4.      Copyright:    © 1984-1994 by Apple Computer, Inc.
  5.                  All rights reserved.
  6.  
  7.      Version:    Universal Interfaces 2.0a3  ETO #16, MPW prerelease.  Friday, November 11, 1994. 
  8.  
  9.      Bugs?:        If you find a problem with this file, send the file and version
  10.                  information (from above) and the problem description to:
  11.  
  12.                      Internet:    apple.bugs@applelink.apple.com
  13.                      AppleLink:    APPLE.BUGS
  14.  
  15. */
  16.  
  17. #ifndef __SERIAL__
  18. #define __SERIAL__
  19.  
  20.  
  21. #ifndef __TYPES__
  22. #include <Types.h>
  23. #endif
  24. /*    #include <ConditionalMacros.h>                                */
  25.  
  26. #ifdef __cplusplus
  27. extern "C" {
  28. #endif
  29.  
  30. #if GENERATINGPOWERPC
  31. #pragma options align=mac68k
  32. #endif
  33.  
  34. #ifdef __CFM68K__
  35. #pragma lib_export on
  36. #endif
  37.  
  38.  
  39. enum {
  40.     baud300                        = 380,
  41.     baud600                        = 189,
  42.     baud1200                    = 94,
  43.     baud1800                    = 62,
  44.     baud2400                    = 46,
  45.     baud3600                    = 30,
  46.     baud4800                    = 22,
  47.     baud7200                    = 14,
  48.     baud9600                    = 10,
  49.     baud19200                    = 4,
  50.     baud38400                    = 1,
  51.     baud57600                    = 0,
  52.     stop10                        = 16384,
  53.     stop15                        = -32768,
  54.     stop20                        = -16384,
  55.     noParity                    = 0,
  56.     oddParity                    = 4096,
  57.     evenParity                    = 12288,
  58.     data5                        = 0,
  59.     data6                        = 2048,
  60.     data7                        = 1024,
  61.     data8                        = 3072
  62. };
  63.  
  64. enum {
  65.     ctsEvent                    = 32,
  66.     breakEvent                    = 128,
  67.     xOffWasSent                    = 128,
  68.     dtrNegated                    = 64,
  69.     ainRefNum                    = -6,                            /*serial port A input*/
  70.     aoutRefNum                    = -7,                            /*serial port A output*/
  71.     binRefNum                    = -8,                            /*serial port B input*/
  72.     boutRefNum                    = -9,                            /*serial port B output*/
  73.     swOverrunErr                = 1,                            /*serial driver error masks*/
  74.     breakErr                    = 8,                            /*serial driver error masks*/
  75.     parityErr                    = 16,                            /*serial driver error masks*/
  76.     hwOverrunErr                = 32,                            /*serial driver error masks*/
  77.     framingErr                    = 64,                            /*serial driver error masks*/
  78.     serdOptionClockExternal        = 0x40,                            /*option bit used with Control code 16*/
  79.     serdOptionPreserveDTR        = 0x80                            /*option bit used with Control code 16*/
  80. };
  81.  
  82. enum {
  83.     sPortA,
  84.     sPortB
  85. };
  86.  
  87. typedef SInt8 SPortSel;
  88.  
  89. /* csCodes for serial driver Control routines */
  90.  
  91. enum {
  92.     serdReset                    = 8,
  93.     serdSetBuf                    = 9,
  94.     serdHShake                    = 10,
  95.     serdClrBrk                    = 11,
  96.     serdSetBrk                    = 12,
  97.     serdSetBaud                    = 13,
  98.     serdHShakeDTR                = 14,
  99.     serdSetMIDI                    = 15,
  100.     serdSetMisc                    = 16,
  101.     serdSetDTR                    = 17,
  102.     serdClrDTR                    = 18,
  103.     serdSetPEChar                = 19,
  104.     serdSetPECharAlternate        = 20,
  105.     serdSetXOff                    = 21,
  106.     serdClrXOff                    = 22,
  107.     serdSendXOnConditional        = 23,
  108.     serdSendXOn                    = 24,
  109.     serdSendXOffConditional        = 25,
  110.     serdSendXOff                = 26,
  111.     serdChannelReset            = 27,
  112.     serdSet230KBaud                = 'JF',                            /* set 230K baud data rate */
  113.     serdSetPollWrite            = 'jf',                            /* disable interrupt-driven transmit */
  114.     serdSetFlushCount            = 'FC'
  115. };
  116.  
  117. /* csCodes for serial driver Status routines */
  118. enum {
  119.     serdGetBuf                    = 2,
  120.     serdStatus                    = 8,
  121.     serdGetVers                    = 9,
  122.     serdGetVersSys                = 0x8000
  123. };
  124.  
  125. struct SerShk {
  126.     Byte                            fXOn;                        /*XOn flow control enabled flag*/
  127.     Byte                            fCTS;                        /*CTS flow control enabled flag*/
  128.     unsigned char                    xOn;                        /*XOn character*/
  129.     unsigned char                    xOff;                        /*XOff character*/
  130.     Byte                            errs;                        /*errors mask bits*/
  131.     Byte                            evts;                        /*event enable mask bits*/
  132.     Byte                            fInX;                        /*Input flow control enabled flag*/
  133.     Byte                            fDTR;                        /*DTR input flow control flag*/
  134. };
  135. typedef struct SerShk SerShk;
  136.  
  137. struct SerStaRec {
  138.     Byte                            cumErrs;
  139.     Byte                            xOffSent;
  140.     Byte                            rdPend;
  141.     Byte                            wrPend;
  142.     Byte                            ctsHold;
  143.     Byte                            xOffHold;
  144. };
  145. typedef struct SerStaRec SerStaRec;
  146.  
  147. extern pascal OSErr SerReset(short refNum, short serConfig);
  148. extern pascal OSErr SerSetBuf(short refNum, Ptr serBPtr, short serBLen);
  149. extern pascal OSErr SerHShake(short refNum, const SerShk *flags);
  150. extern pascal OSErr SerSetBrk(short refNum);
  151. extern pascal OSErr SerClrBrk(short refNum);
  152. extern pascal OSErr SerGetBuf(short refNum, long *count);
  153. extern pascal OSErr SerStatus(short refNum, SerStaRec *serSta);
  154.  
  155. #ifdef __CFM68K__
  156. #pragma lib_export off
  157. #endif
  158.  
  159. #if GENERATINGPOWERPC
  160. #pragma options align=reset
  161. #endif
  162.  
  163. #ifdef __cplusplus
  164. }
  165. #endif
  166.  
  167. #endif /* __SERIAL__ */
  168.